函数：
	函数是C语言管理代码的最小单位，一个函数就是一段具有某项功能的代码。
	标准库函数：C语言标准委员会，为C语言提供了一些基础功能，以函数形式体现，常用的库函数有：
		rand 获取随机数。
			现阶段计算机中的随机数是伪随机数。
			是把所有的无符号整数打乱顺序存储在计算机，rand就是从这个序列中获取，而是不是计算。
			rand默认从第一个位置开始获取，获取的数据每次都一样。
			srand设置rand开始获取的位置，一般配合time(NULL);
		time 获取时间。
		字符串处理相关函数。
		
		qsrot() 排序函数
			void qsort(void *base, size_t nmemb, size_t size,int(*compar)(const void *, const void *));
		getchar()/putchar() 接收、显示字符
		rename/remove 删除文件／重命名文件
		sqrt/pow 编译时 -lm 参数
	系统函数：操作系统提供的一些功能，以函数形式进行调用（它不是函数）。


============================================================================================



函数的传参：
	函数之间只能是值传递，变量赋值（内存拷贝）。
	1、调用函数时调用者与被调用函数传参。
		1、函数的形参和实参是相互独立的两个变量。
			形参变量属于被调函数。
			实参变量属于调用者。
			它们的名字可以相同，但属于不同的函数。
		2、(void)与()不同
			(void) 不给参数才能调用
			() 任何参数都可以调用
		3、使用数组当函数的参数时，数组长度会丢失。
			需要额外添加一个变量用来传递数组的长度。
	2、被调用者返回数据给调用者。
		1、不写return语句也有返回值。
			编译器会为每个有返回值函数开辟一块内存用来存储返回值。
			而return的作用就是把一个数据存储到这块内存上。
			调用都再从这块读取，就能获取到函数的返回值。
			当不写return语句时这块内存上的数据就是不确定的。
		2、func(void) 与 void func(void)不同
			func(void) => int func(void)
			
============================================================================

函数：
    函数是C语言中管理代码的最小单位，命名空间独立，栈空间独立。
    函数被调用时开辟栈内存，函数结束后释放栈内存。

    声明：返回值 函数名(类型1,类型2,...);
    定义：返回值 函数名(类型1 参数名1,类型2 参数名2,...)
    {
        函数体
    }
    注意：函数的定义如果出现调用之前，声明可以忽略。
    注意：调用函数时如果没有找到函数声明，也没有定义，编译器也不报错，而是先猜测函数的格式，链接时再尝试寻找函数的定义。
        return 语句只是把数据存储一个特定的位置，当函数运行结束后，调用者就可以从这个位置获取到返回值。
            函数有返回值（格式），而没写return语句，调用者会得到一个不确定返回值。

    常见编译错误：
        隐式声明函数‘sqrt’，没有找到函数声明和定义，编译时错误。
        undefined reference to `sqrt'，有函数声明，但无函数定义，链接时错误。

    函数本质：函数就存储在代码段中的一段数据（二进制指令的集合），函数名就是这段数据的开始位置。
        因此函数名就是地址，可以定义指向这段数据的指针变量，这种指针叫函数指针。
        返回值 (*函数指针) (类型1,类型2,...) ;
    
    函数的传参：
        1、只能值传递（内存拷贝），使用指针可提高效率（const int *）。
        2、函数之间共享变量，全局变量（尽量少用），指针（注意安全）。
        3、数组当作函数的参数时就脱变成了指针（长度丢失），额外增加一个参数传递数组长度。			
			
	练习1：定义一个函数，把一个秒数（表示自1970年1月1日00:00:00一共过了多少秒）转换成年月日时分秒。
	练习2：定义一个函数，求第n项斐波那切数列。
	练习3：计算并显示100的阶乘。
		
		
